package com.ljx.designMode.factor;

import com.ljx.thread.thread04.DeadLockChop;

/**
 * @author LJX
 * @Description: 简单工厂模式
 * @Date: 2022/11/8 15:21
 * @Version 1.0
 * 简单工厂模式的核心是定义一个创建对象的接口
 * 将对象的创建和本身的业务逻辑分离，降低系统的耦合度
 * 使得两个修改起来相对容易，只需修改工厂类既可以或者本身业务逻辑
 */
public class SimpleFactory {
	public static void main(String[] args) {
		Computer dell = ComputerFactory.createComputer("asus");
		dell.run();
	}
}

/**
 * 抽象产品运行角色；他一般是具体产品继承的父类或者实现的接口
 *
 */
abstract class Computer{
	public abstract  void run();
}
/**
 * 具体产品运行角色；他一般是抽象产品父类或者实现的接口的子类
 * 工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
 *
 */
class Dell extends Computer{
	@Override
	public void run() {
		System.out.println("戴尔电脑在运行");
	}
}

class Asus extends Computer{
	@Override
	public void run() {
		System.out.println("华硕电脑在运行");
	}
}

/**
 * 工厂类角色：该简单模式的核心，用来创建产品，含有一定的商业逻辑和判断逻辑
 */
class  ComputerFactory{

	public static Computer createComputer(String string){
		if(string.equals("dell")){
			return new Dell();
		}else {
			return new Asus();
		}
	}
}